package com.Beans.Employee;

import java.util.ArrayList;
import java.util.List;

import javax.faces.event.ActionEvent;

import org.primefaces.event.SelectEvent;

import com.Beans.Dao.AreaDAO;
import com.Beans.Dao.SolicitudDAO;
import com.Beans.Dao.TrakingestadosDAO;
import com.Beans.Models.Area;
import com.Beans.Models.Empleado;
import com.Beans.Models.Solicitud;
import com.Beans.Models.Trakingestados;
import com.Beans.Sessions.Session;
import com.Beans.Util.DateStandar;
import com.Beans.Util.SolicitudView;

public class EmployeeListRequest {
	private List<SolicitudView> l_solicitudview;
	private SolicitudView var;
	private SolicitudView selected;
	private String e_conformidad;
	
	public List<SolicitudView> getL_solicitudview() {
		 Empleado empleado = new Empleado();
		 empleado.setIdEmpleado(Session.getId());
		 List<Solicitud> solicitudes = SolicitudDAO.findByEmployee(empleado);
		 List<Trakingestados> trakingestados = TrakingestadosDAO.findByEmployee(empleado.getIdEmpleado());
		 l_solicitudview = new ArrayList<SolicitudView>();
		 Area area_origen = AreaDAO.findById(Session.getIdArea());
		 for(int i=0;i<solicitudes.size();i++){
			 SolicitudView sv = new SolicitudView();
			 sv.setId(String.valueOf(solicitudes.get(i).getIdSolicitud()));
			 sv.setEmpleado(solicitudes.get(i).getRedactor());
			 sv.setDetalleMotivo(solicitudes.get(i).getDetalleMotivo());
			 sv.setDetallePermiso(solicitudes.get(i).getDetallePermiso());
			 sv.setAreaOrigen(area_origen.getNombre());
			 Area area_destino = AreaDAO.findById(solicitudes.get(i).getIdAreaDestino());
			 sv.setAreaDestino(area_destino.getNombre());
			 sv.setFechaEmision(DateStandar.FormatDate(solicitudes.get(i).getFechaEmision()));
			 sv.setE_Aprobado(trakingestados.get(i).getEstadoAprobado());
			 if(!sv.getE_Aprobado().equals("Pendiente")){
				 sv.setFechaAprobacion(DateStandar.FormatDate(solicitudes.get(i).getFechaAprobacion()));
				 sv.setMsjRechazado(trakingestados.get(i).getRechazadoMsj());
			 }
			 sv.setE_Efectuado(trakingestados.get(i).getEstadoEfectuado());
			 if(!sv.getE_Efectuado().equals("Pendiente")){
				 sv.setFechaAprobacion(DateStandar.FormatDate(solicitudes.get(i).getFechaRespuesta()));
			 }
			 sv.setE_Conforme(trakingestados.get(i).getEstadoConformidad());
			 if(sv.getE_Conforme().equals("Conforme")){
				 sv.setFechaAprobacion(DateStandar.FormatDate(solicitudes.get(i).getFechaConformidad()));
			 }
			 sv.setE_Solicitud(trakingestados.get(i).getEstadoSolicitud());
			 if(sv.getE_Aprobado().equals("Cancelado")){
				 sv.setFechaAprobacion(DateStandar.FormatDate(solicitudes.get(i).getFechaAprobacion()));
			 }
			 l_solicitudview.add(sv);
		 }
		 return l_solicitudview;
	 }
	public void setL_solicitudview(List<SolicitudView> l_solicitudview) {
		this.l_solicitudview = l_solicitudview;
	}

	public void onRowSelect(SelectEvent event) {
	    
	}
	public SolicitudView getSelected() {
		return selected;
	}
	public void setSelected(SolicitudView selected) {
		this.selected = selected;
	}
	public SolicitudView getVar() {
		return var;
	}
	public void setVar(SolicitudView var) {
		this.var = var;
	}
	
	public String getE_conformidad() {
		return e_conformidad;
	}
	public void setE_conformidad(String e_conformidad) {
		this.e_conformidad = e_conformidad;
	}
	public void Revisar(ActionEvent ae){
		if(selected == null){
			Session.addErrorMessage("Seleccione una Solicitud");
		}else{
			Session.redirectTo("/empleado/solicitud_detallada.xhtml");
		}
	}
	
	public void CancelarSolicitud(ActionEvent ae){
		if(selected.getE_Efectuado().equalsIgnoreCase("Inhabilitado")){
			
		}else{
			
		}
	}
	
	public void EnviarConformidad(ActionEvent ae){
		
	}
	public String dtPedido() {
		String s1 = "Motivo: "+ selected.getDetalleMotivo();
		String s2 = "Permisos:" + selected.getDetallePermiso();
		return s1+"\n"+s2;
	}
	public int IsConformidadEnable() {
		if(selected.getE_Conforme().equalsIgnoreCase("Pendiente")){
			return 1;
		}else{
			return 0;
		}
	}
	public int IsAprobadoEnable() {
		if(selected.getE_Aprobado().equalsIgnoreCase("Pendiente")){
			return 0;
		}else{
			if(selected.getE_Aprobado().equalsIgnoreCase("Aprobado")){
				return 1;
			}else{
				return 2;
			}
		}
			
	}
}
